package org.example.employ_api.config;

import lombok.RequiredArgsConstructor;
import org.example.employ_api.model.GraduateInfo;
import org.example.employ_api.repository.GraduateInfoRepository;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

import java.util.Arrays;
import java.util.List;

@Component
@RequiredArgsConstructor
public class DataInitializer implements CommandLineRunner {

    private final GraduateInfoRepository graduateInfoRepository;

    @Override
    public void run(String... args) {
        // 检查是否已有数据
        if (graduateInfoRepository.count() == 0) {
            initializeGraduateData();
        }
    }

    private void initializeGraduateData() {
        List<GraduateInfo> graduates = Arrays.asList(
            // 计算机科学 - 就业案例
            createGraduateInfo(
                "张三", "计算机科学", "2023", "就业",
                "腾讯", "产品经理", "深圳",
                3.8, "校级奖学金,编程大赛一等奖",
                "Java,Python,产品设计,用户研究",
                "在字节跳动实习3个月，负责抖音电商数据分析；在腾讯实习4个月，参与微信支付产品改进",
                "就业经验"
            ),
            createGraduateInfo(
                "李明", "计算机科学", "2023", "就业",
                "百度", "算法工程师", "北京",
                3.85, "ACM竞赛金牌,百度奖学金",
                "Python,机器学习,深度学习,算法设计",
                "本科期间专注算法竞赛，获得多个奖项。在百度实习期间参与自动驾驶算法优化，表现突出",
                "就业经验"
            ),

            // 软件工程 - 就业案例
            createGraduateInfo(
                "李四", "软件工程", "2023", "就业",
                "阿里巴巴", "后端开发工程师", "杭州",
                3.9, "国家奖学金,ACM金牌",
                "Java,Spring Boot,MySQL,Redis",
                "参与阿里巴巴中间件开发，负责分布式系统设计与实现",
                "就业经验"
            ),
            createGraduateInfo(
                "王芳", "软件工程", "2023", "就业",
                "美团", "前端开发工程师", "北京",
                3.7, "前端技术大赛一等奖",
                "JavaScript,React,Vue,TypeScript",
                "在美团负责外卖App前端开发，优化用户体验，提升页面性能",
                "就业经验"
            ),

            // 信息管理 - 就业案例
            createGraduateInfo(
                "赵雪", "信息管理", "2023", "就业",
                "京东", "数据分析师", "北京",
                3.75, "数据分析竞赛银奖",
                "Python,SQL,数据分析,商业智能",
                "负责京东用户行为分析和销售预测，为运营决策提供数据支持",
                "就业经验"
            ),

            // 数据科学 - 就业案例
            createGraduateInfo(
                "刘洋", "数据科学", "2023", "就业",
                "网易", "机器学习工程师", "杭州",
                3.95, "数学建模国赛一等奖",
                "Python,R,机器学习,深度学习",
                "参与网易游戏AI对战系统开发，实现智能NPC行为预测",
                "就业经验"
            ),

            // 计算机科学 - 考研案例
            createGraduateInfo(
                "赵六", "计算机科学", "2023", "考研",
                "北京大学", "计算机科学与技术", "北京",
                3.85, "专业第一,多次奖学金",
                "算法,数据结构,操作系统",
                "考研备考一年，总结出一套高效的学习方法，成功考入北大计算机专业",
                "考研经验"
            ),
            createGraduateInfo(
                "陈明", "计算机科学", "2023", "考研",
                "浙江大学", "人工智能", "杭州",
                3.8, "优秀学生干部",
                "机器学习,深度学习,数学建模",
                "合理规划复习时间，注重基础与热点相结合，成功考入浙大人工智能专业",
                "考研经验"
            ),

            // 软件工程 - 考研案例
            createGraduateInfo(
                "王五", "软件工程", "2023", "考研",
                "清华大学", "软件工程", "北京",
                3.9, "优秀毕业生",
                "软件工程,系统设计,项目管理",
                "系统复习专业课程，结合实践经验，成功考入清华软件工程专业",
                "考研经验"
            ),

            // 信息管理 - 考研案例
            createGraduateInfo(
                "林婷", "信息管理", "2023", "考研",
                "复旦大学", "信息管理与信息系统", "上海",
                3.7, "三好学生",
                "管理学,信息系统,数据分析",
                "注重理论与实践结合，成功考入复旦信息管理专业，分享备考经验",
                "考研经验"
            ),

            // 计算机科学 - 出国案例
            createGraduateInfo(
                "钱七", "计算机科学", "2023", "出国",
                "哥伦比亚大学", "计算机科学", "纽约",
                3.9, "托福110,GRE330",
                "英语,编程,机器学习",
                "准备留学材料一年，最终成功申请到哥伦比亚大学计算机专业",
                "留学经验"
            ),
            createGraduateInfo(
                "张萍", "计算机科学", "2023", "出国",
                "斯坦福大学", "人工智能", "旧金山",
                3.95, "托福115,GRE335",
                "机器学习,深度学习,计算机视觉",
                "本科期间发表多篇论文，参与国际会议，成功申请斯坦福AI专业",
                "留学经验"
            ),

            // 软件工程 - 出国案例
            createGraduateInfo(
                "孙八", "软件工程", "2023", "出国",
                "麻省理工学院", "软件工程", "波士顿",
                3.85, "雅思8.0,GRE328",
                "软件开发,系统架构,云计算",
                "在微软实习期间表现优异，获得推荐信，成功申请MIT软件工程专业",
                "留学经验"
            ),

            // 数据科学 - 出国案例
            createGraduateInfo(
                "李琳", "数据科学", "2023", "出国",
                "伦敦大学学院", "数据科学与分析", "伦敦",
                3.8, "雅思7.5,多个科研项目",
                "Python,R,数据挖掘,机器学习",
                "在校期间参与多个数据分析项目，发表两篇论文，成功申请UCL数据科学专业",
                "留学经验"
            ),

            // 实习经验案例
            createGraduateInfo(
                "周九", "信息管理", "2024", "就业",
                "字节跳动", "数据分析实习生", "北京",
                3.6, "数据分析大赛二等奖",
                "SQL,Python,数据可视化",
                "在字节跳动实习期间，负责用户行为数据分析，提供产品优化建议",
                "实习经验"
            ),
            createGraduateInfo(
                "吴十", "计算机科学", "2024", "就业",
                "华为", "软件开发实习生", "深圳",
                3.7, "华为软件精英挑战赛优胜奖",
                "Java,Android开发,软件测试",
                "参与华为手机系统开发，学习到很多实际项目经验",
                "实习经验"
            ),
            createGraduateInfo(
                "郑亮", "软件工程", "2024", "就业",
                "腾讯", "前端开发实习生", "深圳",
                3.65, "腾讯前端精英赛三等奖",
                "JavaScript,React,Vue,微信小程序",
                "参与微信小程序开发，负责UI组件库维护和性能优化",
                "实习经验"
            ),
            createGraduateInfo(
                "黄婷", "数据科学", "2024", "就业",
                "阿里巴巴", "算法实习生", "杭州",
                3.75, "数学建模竞赛省级一等奖",
                "Python,机器学习,推荐系统",
                "参与淘宝推荐系统优化，提升商品推荐准确率",
                "实习经验"
            ),

            // 计算机科学 - 更多就业案例
            createGraduateInfo(
                "陈浩", "计算机科学", "2023", "就业",
                "字节跳动", "后端开发工程师", "北京",
                3.7, "优秀毕业生,字节跳动技术之星",
                "Java,Spring Cloud,微服务,分布式系统",
                "主导开发抖音直播后端系统，解决高并发问题，性能提升30%",
                "就业经验"
            ),
            createGraduateInfo(
                "林晓", "计算机科学", "2023", "就业",
                "小米", "Android开发工程师", "北京",
                3.6, "小米开发者大赛金奖",
                "Android,Kotlin,移动开发,性能优化",
                "负责MIUI系统核心功能开发，优化系统性能和用户体验",
                "就业经验"
            ),

            // 软件工程 - 更多就业案例
            createGraduateInfo(
                "张伟", "软件工程", "2023", "就业",
                "滴滴", "全栈工程师", "北京",
                3.75, "全国软件设计大赛二等奖",
                "React,Node.js,MongoDB,Docker",
                "参与滴滴出行核心业务开发，负责司机端到乘客端全链路开发",
                "就业经验"
            ),

            // 信息管理 - 更多就业案例
            createGraduateInfo(
                "李娜", "信息管理", "2023", "就业",
                "阿里云", "产品运营", "杭州",
                3.65, "阿里云最佳新人奖",
                "数据分析,产品运营,用户增长",
                "负责阿里云企业级产品运营，半年实现用户增长50%",
                "就业经验"
            ),

            // 数据科学 - 更多就业案例
            createGraduateInfo(
                "王强", "数据科学", "2023", "就业",
                "蚂蚁集团", "数据科学家", "杭州",
                3.85, "数据挖掘竞赛金奖",
                "机器学习,深度学习,金融科技",
                "负责蚂蚁金服风控系统算法优化，降低欺诈率30%",
                "就业经验"
            ),

            // 计算机科学 - 更多考研案例
            createGraduateInfo(
                "刘芳", "计算机科学", "2023", "考研",
                "上海交通大学", "人工智能", "上海",
                3.8, "优秀毕业论文",
                "机器学习,深度学习,计算机视觉",
                "系统总结考研经验，分享复习方法和时间规划，成功考入上交人工智能专业",
                "考研经验"
            ),

            // 软件工程 - 更多考研案例
            createGraduateInfo(
                "张明", "软件工程", "2023", "考研",
                "南京大学", "软件工程", "南京",
                3.75, "专业前10%",
                "软件架构,系统设计,项目管理",
                "分享软件工程专业考研经验，重点突破专业课，考入南大软件工程专业",
                "考研经验"
            ),

            // 计算机科学 - 更多出国案例
            createGraduateInfo(
                "王丽", "计算机科学", "2023", "出国",
                "加州大学伯克利分校", "计算机科学", "旧金山",
                3.9, "托福112,GRE332",
                "算法,机器学习,分布式系统",
                "分享UC Berkeley申请经验，包括文书准备、推荐信和面试技巧",
                "留学经验"
            ),

            // 软件工程 - 更多出国案例
            createGraduateInfo(
                "李想", "软件工程", "2023", "出国",
                "卡内基梅隆大学", "软件工程", "匹兹堡",
                3.85, "托福109,GRE325",
                "软件开发,云计算,DevOps",
                "分享CMU软件工程专业申请经验，强调项目经历和实习重要性",
                "留学经验"
            ),

            // 更多实习经验
            createGraduateInfo(
                "赵阳", "计算机科学", "2024", "就业",
                "京东", "Java开发实习生", "北京",
                3.6, "京东技术之星",
                "Java,Spring Boot,MySQL",
                "参与京东物流系统开发，负责订单处理模块优化",
                "实习经验"
            ),
            createGraduateInfo(
                "孙莉", "软件工程", "2024", "就业",
                "网易游戏", "游戏开发实习生", "广州",
                3.7, "网易游戏创新奖",
                "Unity3D,C#,游戏开发",
                "参与手游开发，负责游戏界面和玩法设计实现",
                "实习经验"
            ),
            createGraduateInfo(
                "张鑫", "信息管理", "2024", "就业",
                "百度", "产品实习生", "北京",
                3.5, "百度产品设计大赛优秀奖",
                "产品设计,用户研究,数据分析",
                "参与百度地图新功能设计，完成用户研究和产品需求文档",
                "实习经验"
            ),
            createGraduateInfo(
                "李华", "数据科学", "2024", "就业",
                "商汤科技", "算法实习生", "上海",
                3.8, "人工智能创新大赛三等奖",
                "计算机视觉,深度学习,PyTorch",
                "参与人脸识别算法优化，提升识别准确率5%",
                "实习经验"
            )
        );

        graduateInfoRepository.saveAll(graduates);
    }

    private GraduateInfo createGraduateInfo(
            String name, String major, String graduationYear, String careerPath,
            String workplace, String position, String location,
            Double gpa, String awards, String skills,
            String experience, String experienceType) {
        
        GraduateInfo info = new GraduateInfo();
        info.setName(name);
        info.setMajor(major);
        info.setGraduationYear(graduationYear);
        info.setCareerPath(careerPath);
        info.setWorkplace(workplace);
        info.setPosition(position);
        info.setLocation(location);
        info.setGpa(gpa);
        info.setAwards(awards);
        info.setSkills(skills);
        info.setExperience(experience);
        info.setExperienceType(experienceType);
        return info;
    }
} 